#ifndef __GAME_CONTROLLER_LEVEL_HPP__
#define __GAME_CONTROLLER_LEVEL_HPP__

#include "game_controller\ih\game_controller_ilevel.hpp"

namespace GameController {

class Level
	:	public ILevel
{

public:

	Level();

	virtual ~Level();

public:

	/*virtual*/ void addObject( GameModel::IObject::Ptr _object );

	/*virtual*/ void setBackground( QImage* _back );

	/*virtual*/ std::shared_ptr< IScene > formScene( std::shared_ptr< GameModel::IDistanceUnit > _from, std::shared_ptr< GameModel::IDistanceUnit > _to );

public:

	/*virtual*/ ILevel::ObjectsContainer& getObjects();

	/*virtual*/ const QImage* getBackground() const;

	/*virtual*/ ObjectsContainer const& getObjects() const;

private:

	ILevel::ObjectsContainer m_objects;

	QImage* m_background;

};

} // namespace GameController

#endif // __GAME_CONTROLLER_LEVEL_HPP__
